

/**
 * Klasse zum errechnen aller M��glichen Zahlentripel zwichen 0 und der Tastatureingabe
 * @author Andreas Schreiner
 *
 */
public class Zahlentripel {

    static int tripelMAX;
    static String strAusgabe;
    static double tripelC;
    static double tripelA;
    static double tripelB;
    /**
     * 
     * @return Ruckgabe der errechneten Tripeln
     */
    public static String Tripel() 
    {

        if (tripelMAX < 0) 
        { 
            throw new IllegalArgumentException("Falsche Eingabe");
        }
        tripelA = 1;
        tripelB = 2;
        int zaehler = 0;
        strAusgabe = null;
        int borderB;
        borderB = (int)java.lang.Math.cbrt((java.lang.Math.pow((double)(tripelMAX - 1), 3) - 1));
        //strAusgabe = null;
        while(tripelA <= borderB)
        {
            while(tripelB <= borderB)
            {
                TripelRechnung();

                if (tripelA <= tripelB && tripelC > 0)
                {
                    if (tripelC % 1 == 0)
                    {
                        if (strAusgabe == null){
                            strAusgabe = "(" + (int)tripelA + "." + (int)tripelB + "." + (int)tripelC + "):";
                            zaehler = 1;
                        }
                        else if (tripelC < tripelMAX)
                        {
                            strAusgabe = strAusgabe + "(" + (int)tripelA + "." + (int)tripelB + "." + (int)tripelC + "):";
                            zaehler = zaehler +1;
                            if (zaehler == 3)
                            {
                                strAusgabe = strAusgabe + '\n';
                                zaehler = 0;
                            }
                        }
                        else break;
                    }
                }
                tripelB = tripelB + 1;

            }

            if (borderB > tripelA)
            {
                tripelA = tripelA + 1;
                tripelB = 1;
            }
            else
                break;
        }
        return strAusgabe;
    }

    static private double TripelRechnung()
    {
        double cubeA = java.lang.Math.pow(tripelA, 3);
        double cubeB = java.lang.Math.pow(tripelB, 3);
        double unroundTripelC= java.lang.Math.sqrt((cubeA + cubeB));
        double toroundtripelC = unroundTripelC*1000;
        double roundtripelC = Math.round( toroundtripelC );
        tripelC = roundtripelC /1000;
        return (tripelC);
    }
}

//public int Rech(){
//  tripelC = java.lang.Math.sqrt((java.lang.Math.pow(tripelA, 3) + java.lang.Math.pow(tripelB, 3)));
//  if (tripelC % 1 == 0){
//      Ausgabe = tripelA + "." + tripelB + "." + tripelC;
//      return Ausgabe;
//  }
//}
